package com.yuyou.fn.analyze.service;

import com.github.wens.mybatisplus.plugins.Page;
import com.yuyou.fn.analyze.vo.*;
import com.yuyou.fn.educational.entity.BaseGrade;
import com.yuyou.fn.educational.entity.BaseSubject;
import com.yuyou.fn.platform.entity.SysUser;
import com.yuyou.fn.settlement.vo.FeeCategoryTreeMapVo;

import java.util.Date;
import java.util.List;

/**
 *
 * ProductTarget 表数据服务层接口
 *
 */
public interface IGradeAndSubjectStatisticsService {
    List<GradeAndSubjectCostAndIncomeVo> findCostAndIncomeList(Long areaTeamId, Date startDate, Date endDate,Long gradeId,Long subjectId);

    List<GradeAndSubjectCostAndIncomeVo> findCostAndIncomeList(Long areaTeamId, Date startDate, Date endDate, List<Long> gradeIds, List<Long> subjectIds, SysUser sysUser);

    List<GradeAndSubjectClassVo> findGradeAndSujectBusTeamClassLeature(List<Long> busTeamIdList,List<BaseGrade> baseGradeList, List<BaseSubject> baseSubjectList, Date startDate, Date endDate);

    List<GradeAndSubjectCostByCategoryVo> findCategoryCostByGradeAndSubject(Long areaTeamId,List<FeeCategoryTreeMapVo> feeCategoryTreeMapVoList, Long gradeId,Long subjectId, Date startDate, Date endDate);

    List<GradeAndSubjectCostByCategoryVo> findCategoryCostByGradeAndSubject(Long areaTeamId,List<FeeCategoryTreeMapVo> feeCategoryTreeMapVoList, List<Long> gradeIds,List<Long> subjectIds, Date startDate, Date endDate,SysUser sysUser);



    List<TeacherClassCostVo> gradeAndSubjectClassRemunerationDetail(Long areaTeamId,Long gradeId,Long subjectId,Long feeCategoryId, Date startDate, Date endDate);


    List<TeacherClassCostVo> gradeAndSubjectClassRemunerationDetail(Long areaTeamId,Long gradeId,Long subjectId,Long feeCategoryId, Date startDate, Date endDate,SysUser sysUser);

    Page<TeacherClassCostVo> gradeAndSubjectClassRemunerationPage(Long areaTeamId,Long gradeId,Long subjectId,Long feeCategoryId, Date startDate, Date endDate,SysUser sysUser,int pageNo,int pageSize);

    GradeAndSubjectCostDetailVo findDetail(Long areaTeamId,Integer detailType, Long feeCategoryId, Long gradeId,Long subjectId, Date startDate, Date endDate);

    GradeAndSubjectCostDetailVo findDetail(Long areaTeamId,Integer detailType, Long feeCategoryId, Long gradeId,Long subjectId, Date startDate, Date endDate,SysUser sysUser);

    GradeAndSubjectCostDetailVo findGradeAndSubjectDetail(Long areaTeamId,Integer detailType, Long feeCategoryId, Long gradeId,Long subjectId, Date startDate, Date endDate,SysUser sysUser,int pageNo,int pageSize);

    List<ClassIncomeVo> findClassIncomeByAreaTeamId(Long areaTeamId, Long gradeId, Long subjectId, Date startDate, Date endDate);


    List<ClassIncomeVo> findClassIncomeByAreaTeamId(Long areaTeamId, Long gradeId, Long subjectId, Date startDate, Date endDate,SysUser sysUser);


    Page<ClassIncomeVo> findClassIncomePageByAreaTeamId(Long areaTeamId, List<Long> gradeIds, List<Long> subjectIds, Date startDate, Date endDate,SysUser sysUser,int pageNo,int pageSize);
}